﻿using System;
using System.Collections.Generic;
using System.Text;
using Sinacor.Infra.UI.Common;

namespace Sinacor.UI.Bovespa.Ordens.Model
{
    [Serializable]
    public class Ordem : BaseModel
    {

        #region Membros
        private System.String _apelidoBroker;
        private System.String _loginOperador;
        private System.Int32? _operador;
        private System.DateTime? _dataOrdem;
        private System.DateTime? _horaOrdem;        
        private System.Int32? _numeroOrdemSequencia;
        private System.String _situacao;
        private EnumWrapper<Model.Enum.TipoMercado> _tipoMercado;
        private System.String _titulo;
        private List<EnumWrapper<Enum.TipoOrdem>> _tipoOrdem = null;
        private System.Decimal? _percentualReducaoAcrescimo;
        private System.Boolean? _indicadorPessoaVinculada;
        private System.Int32? _codigoCarteira;
        private System.String _indicadorLiquidacao;
        private System.Decimal? _preco;
        private System.DateTime? _dataValidade;
        private EnumWrapper<Enum.TipoNaturezaOperacao> _naturezaOperacao = null;
        private System.String _codigoCasamento;
        private System.Int32? _codigoCliente;
        private System.String _apelidoCliente;
        private System.Decimal? _quantidade;
        private System.String _bolsa;
        private System.Decimal? _quantidadeCasada;
        private System.String _codigoNegocio;
        private System.DateTime? _dataPregao;
        private System.Decimal? _valorFinanciado;
        private System.Int32? _vencimentoTermo;
        private System.Int32? _numeroOrdemOriginal;
        private System.Int32? _digitoCliente;
        private System.Int32? _codigoBroker;
        private System.String _indicadorDistribuicao;
        private System.Int32? _codigoUsuarioOrdem;
        private System.String _nomeCliente;
        private System.String _observacaoOrdem;
        private System.Boolean? _indicadorChamadaLog;
        private System.Decimal? _taxaFinanciamento;
        private System.Boolean? _indicadorDesprezaSaldo;
        private System.String _nomeEmissorOrdem;
        private System.Decimal? _quantidadeAnexo4;
        private System.Decimal? _quantidadeAnexo5;
        private System.String _codigoISIN;
        private System.Decimal? _cambio;
        private System.Boolean? _indicadorOrdemFilaCasamento;
        private System.Int32? _codigoUsuario;
        private String _indicadorTipoDistribuicao;
        private System.Decimal? _quantidadeCanceladaOferta;
        private System.Boolean? _indicadorOrdemAbertaAdminCon;
        private System.Decimal? _saldo;
        private System.String _complementoNomeCliente;
        private System.Decimal? _valorOrdem;
        private System.Int32? _tipoFax;
        private EnumWrapper<Enum.TipoSituacaoCasamento> _tipoSituacaoCasamentoOrdem;
        private System.Int32 _numeroOrdemSubSequencia;
        private System.Int32? _numeroOrdem;
        private System.Int32? _NumeroConjunto;
        private EnumWrapper<Enum.TipoOrdemDistribuicao> _tipoOrdemDistribuicao = null;
        private DateTime _DataOrdem;
        private decimal? _precoMedio;
        private int? _numeroConjunto;
        private string _discricionaria;
        private decimal? _quantidadeDigitada;
        private decimal? _percentualDigitado;
        private int? _prazoTermo;
        private Int32 _ativoQuantidadeMinima;

        //private DateTime _DataMovimento;
        #endregion

        #region Propriedades

        public System.String ApelidoBroker
        {
            get { return _apelidoBroker; }
            set { _apelidoBroker = value; this.OnPropertyChanged("ApelidoBroker"); }
        }
        public System.String LoginOperador
        {
            get { return _loginOperador; }
            set { _loginOperador = value; this.OnPropertyChanged("LoginOperador"); }
        }
        public System.Int32? Operador
        {
            get { return _operador; }
            set { _operador = value; this.OnPropertyChanged("Operador"); }
        }
        public System.DateTime? DataOrdem
        {
            get { return _dataOrdem; }
            set { _dataOrdem = value; this.OnPropertyChanged("DataOrdem"); }
        }
        public System.DateTime? HoraOrdem
        {
            get { return _horaOrdem; }
            set { _horaOrdem = value; this.OnPropertyChanged("HoraOrdem"); }
        }

        public System.Int32? NumeroOrdemSequencia
        {
            get { return _numeroOrdemSequencia; }
            set { _numeroOrdemSequencia = value; this.OnPropertyChanged("NumeroOrdemSequencia"); }
        }
        public System.Int32 NumeroOrdemSubSequencia
        {
            get { return _numeroOrdemSubSequencia; }
            set { _numeroOrdemSubSequencia = value; this.OnPropertyChanged("NumeroOrdemSubSequencia"); }
        }
        public System.String Situacao
        {
            get { return _situacao; }
            set { _situacao = value; this.OnPropertyChanged("Situacao"); }
        }
        public EnumWrapper<Model.Enum.TipoMercado> TipoMercado
        {
            get { return _tipoMercado; }
            set { _tipoMercado = value; this.OnPropertyChanged("TipoMercado"); }
        }
        public System.String Titulo
        {
            get { return _titulo; }
            set { _titulo = value; this.OnPropertyChanged("Titulo"); }
        }
        public List<EnumWrapper<Enum.TipoOrdem>> TipoOrdem
        {
            get { return _tipoOrdem; }
            set { _tipoOrdem = value; this.OnPropertyChanged("TipoOrdem"); }
        }
        public System.Decimal? PercentualReducaoAcrescimo
        {
            get { return _percentualReducaoAcrescimo; }
            set { _percentualReducaoAcrescimo = value; this.OnPropertyChanged("PercentualReducaoAcrescimo"); }
        }
        public System.Boolean? IndicadorPessoaVinculada
        {
            get { return _indicadorPessoaVinculada; }
            set { _indicadorPessoaVinculada = value; this.OnPropertyChanged("IndicadorPessoaVinculada"); }
        }
        public System.Int32? CodigoCarteira
        {
            get { return _codigoCarteira; }
            set { _codigoCarteira = value; this.OnPropertyChanged("CodigoCarteira"); }
        }
        public System.String IndicadorLiquidacao
        {
            get { return _indicadorLiquidacao; }
            set { _indicadorLiquidacao = value; this.OnPropertyChanged("IndicadorLiquidacao"); }
        }
        public System.Decimal? Preco
        {
            get { return _preco; }
            set { _preco = value; this.OnPropertyChanged("Preco"); }
        }
        public System.DateTime? DataValidade
        {
            get { return _dataValidade; }
            set { _dataValidade = value; this.OnPropertyChanged("DataValidade"); }
        }
        public EnumWrapper<Enum.TipoNaturezaOperacao> NaturezaOperacao
        {
            get { return _naturezaOperacao; }
            set { _naturezaOperacao = value; this.OnPropertyChanged("NaturezaOperacao"); }
        }
        public System.String CodigoCasamento
        {
            get { return _codigoCasamento; }
            set { _codigoCasamento = value; this.OnPropertyChanged("CodigoCasamento"); }
        }
        public System.Int32? CodigoCliente
        {
            get { return _codigoCliente; }
            set { _codigoCliente = value; this.OnPropertyChanged("CodigoCliente"); }
        }

        public string ApelidoCliente
        {
            get { return _apelidoCliente; }

            set
            {
                if (value.Length <= 18)
                    _apelidoCliente = value;
                else
                    _apelidoCliente = value.Substring(0, 18);
            }
        }

        public System.Decimal? Quantidade
        {
            get { return _quantidade; }
            set { _quantidade = value; this.OnPropertyChanged("Quantidade"); }
        }
        public System.String Bolsa
        {
            get { return _bolsa; }
            set { _bolsa = value; this.OnPropertyChanged("Bolsa"); }
        }

        public System.Decimal? QuantidadeCasada
        {
            get { return _quantidadeCasada; }
            set { _quantidadeCasada = value; this.OnPropertyChanged("QuantidadeCasada"); }
        }


        public System.String CodigoNegocio
        {
            get { return _codigoNegocio; }
            set { _codigoNegocio = value; this.OnPropertyChanged("CodigoNegocio"); }
        }
        public System.DateTime? DataPregao
        {
            get { return _dataPregao; }
            set { _dataPregao = value; this.OnPropertyChanged("DataPregao"); }
        }
        public System.Decimal? ValorFinanciado
        {
            get { return _valorFinanciado; }
            set { _valorFinanciado = value; this.OnPropertyChanged("ValorFinanciado"); }
        }
        public System.Int32? VencimentoTermo
        {
            get { return _vencimentoTermo; }
            set { _vencimentoTermo = value; this.OnPropertyChanged("VencimentoTermo"); }
        }
        public System.Int32? NumeroOrdemOriginal
        {
            get { return _numeroOrdemOriginal; }
            set { _numeroOrdemOriginal = value; this.OnPropertyChanged("NumeroOrdemOriginal"); }
        }
        public System.Int32? DigitoCliente
        {
            get { return _digitoCliente; }
            set { _digitoCliente = value; this.OnPropertyChanged("DigitoCliente"); }
        }
        public System.Int32? CodigoBroker
        {
            get { return _codigoBroker; }
            set { _codigoBroker = value; this.OnPropertyChanged("CodigoBroker"); }
        }
        public System.String IndicadorDistribuicao
        {
            get { return _indicadorDistribuicao; }
            set { _indicadorDistribuicao = value; this.OnPropertyChanged("IndicadorDistribuicao"); }
        }
        public System.Int32? CodigoUsuarioOrdem
        {
            get { return _codigoUsuarioOrdem; }
            set { _codigoUsuarioOrdem = value; this.OnPropertyChanged("CodigoUsuarioOrdem"); }
        }
        public System.String NomeCliente
        {
            get { return _nomeCliente; }
            set { _nomeCliente = value; this.OnPropertyChanged("NomeCliente"); }
        }
        public System.String ObservacaoOrdem
        {
            get { return _observacaoOrdem; }
            set { _observacaoOrdem = value; this.OnPropertyChanged("ObservacaoOrdem"); }
        }
        public System.Boolean? IndicadorChamadaLog
        {
            get { return _indicadorChamadaLog; }
            set { _indicadorChamadaLog = value; this.OnPropertyChanged("IndicadorChamadaLog"); }
        }
        public System.Decimal? TaxaFinanciamento
        {
            get { return _taxaFinanciamento; }
            set { _taxaFinanciamento = value; this.OnPropertyChanged("TaxaFinanciamento"); }
        }
        public System.Boolean? IndicadorDesprezaSaldo
        {
            get { return _indicadorDesprezaSaldo; }
            set { _indicadorDesprezaSaldo = value; this.OnPropertyChanged("IndicadorDesprezaSaldo"); }
        }
        public System.String NomeEmissorOrdem
        {
            get { return _nomeEmissorOrdem; }
            set { _nomeEmissorOrdem = value; this.OnPropertyChanged("NomeEmissorOrdem"); }
        }
        public System.Decimal? QuantidadeAnexo4
        {
            get { return _quantidadeAnexo4; }
            set { _quantidadeAnexo4 = value; this.OnPropertyChanged("QuantidadeAnexo4"); }
        }
        public System.Decimal? QuantidadeAnexo5
        {
            get { return _quantidadeAnexo5; }
            set { _quantidadeAnexo5 = value; this.OnPropertyChanged("QuantidadeAnexo5"); }
        }
        public System.String CodigoISIN
        {
            get { return _codigoISIN; }
            set { _codigoISIN = value; this.OnPropertyChanged("CodigoISIN"); }
        }
        public System.Decimal? Cambio
        {
            get { return _cambio; }
            set { _cambio = value; this.OnPropertyChanged("Cambio"); }
        }
        public System.Boolean? IndicadorOrdemFilaCasamento
        {
            get { return _indicadorOrdemFilaCasamento; }
            set { _indicadorOrdemFilaCasamento = value; this.OnPropertyChanged("IndicadorOrdemFilaCasamento"); }
        }
        public System.Int32? CodigoUsuario
        {
            get { return _codigoUsuario; }
            set { _codigoUsuario = value; this.OnPropertyChanged("CodigoUsuario"); }
        }
        public String IndicadorTipoDistribuicao
        {
            get { return _indicadorTipoDistribuicao; }
            set { _indicadorTipoDistribuicao = value; this.OnPropertyChanged("IndicadorTipoDistribuicao"); }
        }
        public System.Decimal? QuantidadeCanceladaOferta
        {
            get { return _quantidadeCanceladaOferta; }
            set { _quantidadeCanceladaOferta = value; this.OnPropertyChanged("QuantidadeCanceladaOferta"); }
        }
        public System.Boolean? IndicadorOrdemAbertaAdminCon
        {
            get { return _indicadorOrdemAbertaAdminCon; }
            set { _indicadorOrdemAbertaAdminCon = value; this.OnPropertyChanged("IndicadorOrdemAbertaAdminCon"); }
        }
        public System.Decimal? Saldo
        {
            get { return _saldo; }
            set { _saldo = value; this.OnPropertyChanged("Saldo"); }
        }
        public System.String ComplementoNomeCliente
        {
            get { return _complementoNomeCliente; }
            set { _complementoNomeCliente = value; this.OnPropertyChanged("ComplementoNomeCliente"); }
        }
        public System.Decimal? ValorOrdem
        {
            get { return _valorOrdem; }
            set { _valorOrdem = value; this.OnPropertyChanged("ValorOrdem"); }
        }
        public System.Int32? TipoFax
        {
            get { return _tipoFax; }
            set { _tipoFax = value; this.OnPropertyChanged("TipoFax"); }
        }
        public EnumWrapper<Enum.TipoSituacaoCasamento> TipoSituacaoCasamentoOrdem
        {
            get { return _tipoSituacaoCasamentoOrdem; }
            set { _tipoSituacaoCasamentoOrdem = value; this.OnPropertyChanged("TipoSituacaoCasamentoOrdem"); }
        }
        public System.Int32? NumeroOrdem
        {
            get { return _numeroOrdem; }
            set { _numeroOrdem = value; this.OnPropertyChanged("NumeroOrdem"); }
        }
        public System.Int32? NumeroConjunto
        {
            get { return _NumeroConjunto; }
            set { _NumeroConjunto = value; 
                this.OnPropertyChanged("NumeroConjunto");
            }
        }
        public EnumWrapper<Enum.TipoOrdemDistribuicao> TipoOrdemDistribuicao
        {
            get { return _tipoOrdemDistribuicao; }
            set { _tipoOrdemDistribuicao = value; }
        }
        //public DateTime DataMovimento
        //{
        //    get { return _DataMovimento; }
        //    set { _DataMovimento = value; }
        //}
        public decimal? PrecoMedio
        {
            get { return _precoMedio; }
            set { _precoMedio = value; this.OnPropertyChanged("PrecoMedio"); }
        }


        public string Discricionaria
        {
            get { return _discricionaria; }
            set { _discricionaria = value; this.OnPropertyChanged("Discricionaria"); }
        }

        public decimal? QuantidadeDigitada
        {
            get { return _quantidadeDigitada; }
            set { _quantidadeDigitada = value; this.OnPropertyChanged("QuantidadeDigitada"); }
        }

        public decimal? PercentualDigitado
        {
            get { return _percentualDigitado; }
            set { _percentualDigitado = value; this.OnPropertyChanged("PercentualDigitado"); }
        }

        public int? PrazoTermo
        {
            get { return _prazoTermo; }
            set { _prazoTermo = value; this.OnPropertyChanged("PrazoTermo"); }
        }

		/// Data: 01/09/2008
        /// Autor: APSilva
        /// Os: Criado conforme task 1516
        /// 
        private System.String _IndicadorDisparaTrigger;
         /// Data:01/02/2008 15:26 /// Autor:CPimentel /// Obs:ESTE ATRIBUTO ESTAVA FALTANDO
        public System.String IndicadorDisparaTrigger
        {
            get { return _IndicadorDisparaTrigger; }
            set { _IndicadorDisparaTrigger = value; this.OnPropertyChanged("IndicadorDisparaTrigger");}
        
        }
        
                private System.String _IndicadorExterno;
        
        public System.String IndicadorExterno
        {
            get { return _IndicadorExterno; }
            set { _IndicadorExterno = value; this.OnPropertyChanged("IndicadorExterno");}
        }
        
        private System.String _IndicadorFOP;
        
        public System.String IndicadorFOP
        {
            get { return _IndicadorFOP; }
            set { _IndicadorFOP = value; this.OnPropertyChanged("IndicadorFOP");}
        }
        
        private System.Decimal? _valorDolar;
        
        public System.Decimal? valorDolar
        {
            get { return _valorDolar; }
            set { _valorDolar = value; this.OnPropertyChanged("valorDolar");}
        }
        
        /// Data: 01/09/2008
        /// Autor: APSilva
        /// Os: Criado conforme task 1516
        /// 
        private System.Decimal ? _PercentualFinanciado;
         /// Data:01/02/2008 15:26 /// Autor:CPimentel /// Obs:ESTE ATRIBUTO ESTAVA FALTANDO
        public System.Decimal ? PercentualFinanciado
        {
            get { return _PercentualFinanciado; }
            set { _PercentualFinanciado = value; this.OnPropertyChanged("PercentualFinanciado");}

        }
        
        /// <summary>
        /// Identifica se a ordem foi criada pelo mega bolsa, = true megabolsa e false para sinacor
        /// </summary>
        private bool _OrdemMegaBolsa;
        public bool OrdemMegaBolsa
        {
            get { return _OrdemMegaBolsa; }
            set { _OrdemMegaBolsa = value; }
        }

        public Int32 AtivoQuantidadeMinima
        {
            get { return _ativoQuantidadeMinima; }
            set { _ativoQuantidadeMinima = value; }
        }
        #endregion

    }
}
